home *** CD-ROM | disk | FTP | other *** search
Wrap
Text File | 1989-07-26 | 22.7 KB | 1,076 lines
; **************************************** ; ** INTRO NUMBER 5 (C) 1990 CRYPTIC UK ** ; ** CODED BY: TANGO ** ; ** MUSIC BY: COUNT ** ; **************************************** opt c- section blitter,code_c Chip Ram please !! include df1:definitions Give me some hardware reggies include df1:macros Give me some macros ;LOCAL CONSTANTS icra equ $bfed01 ;allocmem =-30-168 ;freemem =-30-180 fontmemory =4000 MEMF_CHIP EQU 1<<1 MEMF_CLEAR EQU 1<<16 MEMORY EQU MEMF_CHIP+MEMF_CLEAR ;allocates chip ram and clears it TAKEOVER: Move.l #Blank,D1 Move.w D1,Blank1l+2 Move.w D1,Blank2l+2 Move.w D1,Blank3l+2 Swap D1 Move.w d1,Blank1h+2 Move.w d1,Blank2h+2 Move.w d1,Blank3h+2 LEA custom,a5 LEA GFXLIB(PC),a1 Point to 'graphics.library' MOVEQ #0,D0 Doesn't matter which version MOVE.L 4.w,a6 EXECBASE jsr -132(a6) task switching off (forbid) JSR -$228(a6) Openlibrary MOVE.L D0,GFXBASE Store library address jsr cyb_init ;Now put the graphic addresses in the CopperList move.l screenx,d1 Bitplane memory address move.w d1,bp1lo+2 for scroll 1. swap d1 move.w d1,bp1hi+2 move.l screenx,d1 Bitplane memory address ADD.L #10000,D1 move.w d1,bp3lo+2 for scroll 1. swap d1 move.w d1,bp3hi+2 move.l screenx,d1 Bitplane memory address ADD.L #10000*2,D1 move.w d1,bp5lo+2 for scroll 1. swap d1 move.w d1,bp5hi+2 move.l screeny,d1 Bitplane memory address move.w d1,abp1lo+2 for scroll 2. swap d1 move.w d1,abp1hi+2 move.l screeny,d1 Bitplane memory address ADD.L #10000,D1 move.w d1,abp3lo+2 for scroll 2. swap d1 move.w d1,abp3hi+2 move.l screeny,d1 Bitplane memory address ADD.L #10000*2,D1 move.w d1,abp5lo+2 for scroll 2. swap d1 move.w d1,abp5hi+2 ; ** SET UP EVEN BITPLANES 2,4,6 ** MOVE.L #PLAY2+18*44-2,D1 MOVE.W D1,BP2LO+2 SWAP D1 MOVE.W D1,BP2HI+2 MOVE.L #PLAY2+18*44-2,D1 ADD.L #44*290,D1 MOVE.W D1,BP4LO+2 SWAP D1 MOVE.W D1,BP4HI+2 MOVE.L #PLAY2+18*44-2,D1 ADD.L #44*290*2,D1 MOVE.W D1,BP6LO+2 SWAP D1 MOVE.W D1,BP6HI+2 move.l GFXBASE,d0 Move gfxbase offset to d0 MOVE.L D0,A6 MOVE.W #$80,dmacon(a5) Turn off copper whilst changing it MOVE.L $32(A6),WBCOPPER Store old (WBench) copper address MOVE.L #OURCOPPER,$32(A6) Point to new copper list (our own) MOVE.W #$8080,dmacon(a5) Re-enable copper MOVE.W #$8010,intena(a5) MOVE.L $6c,old Save work bench interrupt MOVE.L #LEV3,$6c Point to were to set up interrupt move.w intenar(a5),systemints move.b #%01111111,icra Kill keyboard. WAIT: BTST #6,$BFE001 This waits for the left BNE.S WAIT mouse button to be pressed move.l 4.w,a6 EXECBASE MOVE.L old,$6c Restore system interrupts MOVE.L GFXBASE,A6 MOVE.W #$80,dmacon(a5) Disable DMA MOVE.L WBCOPPER,$32(A6) Restore old copperlist MOVE.W #$8080,dmacon(a5) Enable DMA move.w systemints,d0 Systems interrupt or.w #$c000,d0 move.w d0,intena(a5) Enable OS interrupts move.b #%10011011,icra Enable keyboard clr.w $dff0a8 Clear music clr.w $dff0b8 clr.w $dff0c8 clr.w $dff0d8 move.w #$f,$dff096 rts ERROR: move.l 4.w,a6 Get EXECBASE jsr -138(a6) Permit ( multi-tasking on ) moveq #0,d0 Clear d0 RTS Return to AmigaDOS ;This is the NEW level 3 interrupt LEV3: Save_all Save all registers to the stack lea custom,a5 AND #$10,intreqr(a5) Check if interrupt is from Copper BNE out move.w #$8010,$9c Cause Copper interrupt ; ** Main Routines called every VBI ** bsr testscroll bsr testscroll2 bsr bounce2 bsr bounce jsr cyb_music out: Return_all DC.W $4ef9 hex value for JMP instruction old: DC.L 0 will jump to normal interrupt ; ** THE SCROLL ROUTINE ** testscroll: tst.l stopper beq.s scroll sub.l #1,stopper rts scroll: cmp.l #30,val Blitshifted all <<< blo.s coarse_scroll_it No then get doing it !! bsr blit_char Blit letter to screen clr.l val Reset index coarse_scroll_it: bsr coarse Scroll all line rts testscroll2: tst.l stopper2 Test for pause. beq.s scroll2 sub.l #1,stopper2 rts scroll2: cmp.l #30,val2 Blitshifted all <<< blo.s coarse_scroll_it2 No then get doing it blitter man !! bsr blit_char2 Blit letter to screen clr.l val2 Reset index coarse_scroll_it2: bsr coarse2 Scroll all line rts ; ** BLIT LETTER ON THE SCREEN ** blit_char jsr text lea custom,a5 Get custom chip address move.l screenx,a0 The screen on which scrolly is. move.l #font,a1 Put font in blitter source add.l d2,a1 MOVE.L #2,D1 Sub.l #4,A0 blit_test: btst #14,$dff002 Blitter busy !!! bne blit_test Lets wait till she finishes ! move.w #$ffff,bltafwm(a5) Mask move.w #$ffff,bltalwm(a5) Mask move.l a0,bltdpth(a5) Blitter dest D (BOTTOM OF SCREEN) move.l a1,bltapth(a5) Blitter source A (SCROLLING FONT) move.w #36,bltamod(a5) Modulo (20-1)*2 move.w #44,bltdmod(a5) Modulo (20-1)*2 move.w #$9f0,bltcon0(a5) Minterms D=A clr.w bltcon1(a5) Set Ascending mode move.w #34*64+2,bltsize(a5) Blit size (SIZE OF FONT) ADD.L #10000,A0 ADD.L #40*200,A1 DBF D1,BLIT_TEST rts Return ; ** BLITSHIFT THE ENTIRE SCROLL LINE ** ; ; FUNCTION: TO BARREL SHIFT THE ENTIRE SCROLLING MESSAGE. coarse: lea custom,a5 move.l screenx,a0 move.l a0,a1 add.l #2,a1 move.l #2,d1 move #12,d2 incl #4,val ror #4,d2 ; Set to correct bits (12-15) or.w #$09f0,d2 blit_wait: btst #14,$dff002 bne blit_wait move.l #-1,bltafwm(a5) move.l a1,bltapth(a5) move.l a0,bltdpth(a5) move.w #0,bltamod(a5) move.w #0,bltdmod(a5) move.w d2,bltcon0(a5) move.w #34*64+20,bltsize(a5) add.l #10000,a0 add.l #10000,a1 dbf d1,blit_wait rts ; ** SCROLL NUMBER TWO ** ; ; DOCUMENTED IN SCROLL NUMBER ONE. blit_char2: jsr text2 lea custom,a5 move.l screeny,a0 move.l #font,a1 add.l d2,a1 MOVE.L #2,D6 Sub.l #4,A0 blit_test2: btst #14,$dff002 bne blit_test2 move.w #$ffff,bltafwm(a5) move.w #$ffff,bltalwm(a5) move.l a0,bltdpth(a5) move.l a1,bltapth(a5) move.w #36,bltamod(a5) move.w #44,bltdmod(a5) move.w #$9f0,bltcon0(a5) clr.w bltcon1(a5) move.w #34*64+2,bltsize(a5) ADD.L #10000,A0 ADD.L #40*200,A1 DBF D6,BLIT_TEST2 rts coarse2: lea custom,a5 move.l screeny,a0 move.l a0,a1 add.l #2,a1 move.l #2,d4 incl #4,val2 move #12,d7 ror #4,d7 or #%100111110000,d7 blit_wait2: btst #14,$dff002 bne blit_wait2 move.l #-1,bltafwm(a5) move.l a1,bltapth(a5) move.l a0,bltdpth(a5) move.w #0,bltamod(a5) move.w #0,bltdmod(a5) move.w d7,bltcon0(a5) move.w #34*64+20,bltsize(a5) add.l #10000,a0 add.l #10000,a1 dbf d4,blit_wait2 rts ; ** THIS CRAPPY CODE BOUNCES THE SCROLLY MESSAGE NUMBER TWO ** ; ; ENTRYS : YCORD-HOW FAR UP AND DOWN SCREEN TO GO. ; : DELTAY-WAIT COMMAND IN COPPERLIST. ; FUNCTION: BOUNCE THE SCROLLY MESSAGE. bounce: cmp.l #66,ycord beq.s up add.l #1,ycord sub.b #1,deltay rts up: cmp.l #66,ycordminus beq.s rst_cord add.l #1,ycordminus add.b #1,deltay rts rst_cord: clr.l ycord clr.l ycordminus rts even ; ** THIS CRAPPY CODE BOUNCES SCROLLY MESSAGE NUMBER ONE (ONE AT THE TOP) ** ; ; ENTRYS : YCORD2-HOW FAR UP AND DOWN SCREEN TO GO. ; : DELTAY2-WAIT COMMAND IN COPPERLIST. ; FUNCTION: BOUNCE THE SCROLLY MESSAGE. bounce2: cmp.l #66,ycord2 beq.s up2 add.l #1,ycord2 add.b #1,deltay2 rts up2:cmp.l #66,ycordminus2 beq.s rst_cord2 add.l #1,ycordminus2 sub.b #1,deltay2 rts rst_cord2: clr.l ycord2 clr.l ycordminus2 rts even ; ** CHARACTER DECODER ROUTINE ** ; CHARACTER BASE ADDRESS RETURNED IN D2 ; JUST ADD THIS TO YOUR FONT ADDREES. text: Clr.l d1 move.l acurent,a2 move.b (A2),d1 cmp.b #254,d1 beq.s stop_scroll Cmp.b #255,d1 bne over Move.l #Texter,a2 MOVE.L #TEXTER,ACURENT Move.b (a2),d1 Over Add.l #1,Acurent Lea Char,a1 Sub.l #32,d1 Add.l d1,d1 Clr.l d2 Move.w (a1,d1),d2 ; CHAR BASE ADDRESS IN D2. Rts stop_scroll: move.l #5136,d2 ; Blank letter. add.l #1,acurent move.l #150,stopper rts ; ** CHARACTER OFFSETS TO FONT ** even Char: dc.w 5136,3864,0,0,0,0,0,5132,3868,3872,0,0 dc.w 5128,3876,5124,0,3860,2584,2588,2592,2596,3840 dc.w 3844,3848,3852,3856,0,0,0,0,0,5120,0 dc.w 0,4,8,12,16,20,24,28,32,36,1280,1284,1288,1292,1296 dc.w 1300,1304,1308,1312,1316,2560,2564,2568,2572,2576,2580 dc.w 0,0,0 even ; ** MESSAGE NUMBER ONE ** Acurent: DC.L Texter Texter: DC.B " MR.COOL OF INFINITY " DC.B " THE STARFIELD WILL BE IN NEXT TIME (HAVING TROUBLE WITH IT)" DC.B " I DONT KNOW WHAT THE QUADRANT IS FOR IT OR THE COESENT OF DELTA 8 OVER OMEGA ???" DC.B " OH ANY IDEAS ON THE ROTATION BIT ??? AND DONT SAY LSR !! AND WHAT DO YOU MEAN BY A COMPRESS ROUTINE ON THE SCROLLER ???" DC.B " ALL THE CODE FOR THE SCROLLER THAT KODAK DID HAS BEEN ALL RE-WROTE DUE TO THE FACT THAT WHEN I PUT MUSIC IN IT SLOOOOWED DOWN" DC.B " ALSO IT WASN'T SET UP IN DUAL PLAYFIELD AND I THOUGHT THE SOURCE CODE WAS A BIT ON THE LONG SIDE." DC.B " THIS CODE IS NOW 200K BUT WILL CRUNCH TO ABOUT 70K DUE TO THE FACT THERE ARE ALOT OF BLANK SCREENS IN THERE !!!" DC.B " WELL WRITE SOON OR PHONE AND I'LL SEE YA IN BLACKPOOL (WILDTHING SAYS THAT YOUR PAYING ???? IS IT TRUE !!!) WELL SEE YA RAY" DC.B " " DC.B " TANGO ",254 DC.B " THE COOL GUY OF CRYPTIC WITH THE MORE INTERESTING SCROLL TEXT THAN THAT SHIT ONE AT THE BOTTOM (NO DONT LOOK THERE!!)" DC.B " I THINK ITS BY WILDTHING (THE OTHER COOL GUY IN CRYPTIC) SO ITS ABOUT TO BE WEIRD AND FULL OF SPILLENG MASTIKES" DC.B " DONATELLO HAS BEEN BANNED FROM USING THE COOL CAR DUE TO THE FACT HIS DAD HAS BEEN WATCHING THE MILEAGE !!! THE OTHER DAY WHEN WE HAD BEEN TO BLACKPOOL WE HAD CLOCKED UP" DC.B " 200 MILES !!! AND IN THE LAST WEEK OR SO WE HAVE CLOCKED UP AROUND 700 MILES !!!" DC.B " ARE YOU STILL HERE RAY OR HAVE YOU GONE TO THE OTHER BORING SHIT BLITSHIFT SCROLL ???" DC.B " WILDTHING GO AND FUK YOURSELF AND STOP TELLING ME TO HURRY UP !!!" DC.B " A MESSAGE TO THE 2 BIRDS IN BOLTON ON SATURDAY WE'D HAVE GIVEN YOU A LIFT IF PROTON WASN'T IN THE BACK (NO ROOM) SEE YA NEXT WEEK FOR A GOOD TALK AND A GOOD ....." DC.B " MESSAGE TO VIKI YOU TART WILDTHING WANTS HIS PACKET OF MATES BACK HE ONLY USED TWO, BY THE WAY YOU OWE HIM 50 QUID FOR THAT NIGHT !! HE SAYS !!!" DC.B " WELL I'M GOING NOW TO GO AND DO SOMETHING MORE INTERESTING LIKE A GOOD .U.K YOU CAN GO AND READ THAT BORING DIKS SCROLL NOW GO ON READ IT AND FALL TO SLEEP SEE YA" DC.B " WRAPPP " DC.B 255 even text2: Clr.l d1 move.l acurent2,a2 move.b (A2),d1 cmp.b #254,d1 beq pause_scroll Cmp.b #255,d1 bne over2 Move.l #Texter2,a2 MOVE.L #TEXTER2,ACURENT2 ; RESET TO BEGINING OF MESSAGE. Move.b (a2),d1 Over2: Add.l #1,Acurent2 Lea Char,a1 Sub.l #32,d1 Add.l d1,d1 Clr.l d2 Move.w (a1,d1),d2 ; CHAR BASE ADDRESS IN D2. rts pause_scroll: move.l #5136,d2 add.l #1,acurent2 move.l #150,stopper2 rts ; ** MESSAGE NUMBER TWO ** even Acurent2 Dc.l Texter2 Texter2: DC.B " WILD THING THE KNOB ED WARNING HALF OF THE SHIT IN THIS SCROLL TEXT IS NOT TRUE " Dc.b " WILD THING",254," TYPING YET SOME MORE AMAZYING SCROLL TEXT" DC.B " DID YOU NO THAT IF I BENT OVER I COULD FUCK MY SELF MY DICK IS THAT BIG!!!!!! " DC.B " ASK VIKI SHE WILL TELL YOU I AM GOING TO SEND YOU THE FINISHED BOOT MENU ISTALLER IN THE NEXT FEW DAYS" DC.B " COULD YOU SEND ME DOWN SPIDDYS PHONE NUMBER SO I CAN GIVE HIM SOME SERIOUS BULLSHIT ABOUT WHY THERE HAS BEEN SUCH A BIG DELAY" DC.B " DID YOU NO THAT -3 SQUARED = 9 I DO HA HA CAN I THINK OF ANY MORE BULLSHIT TO TYPE" DC.B " THAT SORCE YOU SENT ME OF THE VECTORS IS NOT KREATORS ITS SOME THING I HAD DONE AGES BACK ONLY KIDDING" DC.B " IS FILM HEAD " DC.B " KODAK ",254," THERE YES WELL WHY THE FUCK DID YOU NOT USE DUAL PLAYFIELD FOR THEM TWO SCROLLERS OR DID RAY NOT TELL YOU" DC.B " HE WANTED A PICTURE BEHIND HIM DID YOU NO THAT PROTON WANTS TO GET BEHIND YOU YES HE IS GAY " DC.B " SO HE SAYS NO I BETTER NOT START RYMING CAUSE I WILL GET YOU LOT CRYING BECAUSE IT IS NOT VERY GOOD UNDERSTOOD THERE I AM AT IT AGAIN" DC.B " IS ENT LIFE A BITCH AND THEN YOU MARRY ONE BAD NEWS EH WHATS THE DIFFERENCE BETWEEN MARAGE AND PRISON YOU LIKE THE FOOD IN PRISON" DC.B " THATS ALL FOR NOW NO IT ISNT I AM BLACK WELL I NO THAT I MEAN I AM BACK MESSAGE TO SPIDY RAY INFORMS ME THAT YOU DO MOST COMPS" DC.B " HOW COME I HAVE NOT GOT NONE I AM WELL PISSED OFF YESS YESS YESS HARDER HARDER THOSE WHERE VIKI WORDS WHEN I FUCKED HER BRAINS OUT" DC.B " YES I AM A MENTALY DERANGED BIG DICKED COOL PERSON I THINK" DC.B " WHAT DO YOU THINK OF THE BORRING SCROLL TEXT ABOVE " DC.B " NOW CLICK THAT PUSSY BUTTON AND QUIT THIS SHIT I MEAN COW DUNG I MEAN FUCK IT PRESS IT OR I WILL",255 even ; ********************************************** ; ** THE MUZAX PLAY ROUTINE FOR NOISE TRACKER ** ; ****************************************** MUZAX: jsr CYB_init end: rts CYB_init:lea CYB_data,a0 add.l #$03b8,a0 moveq #$7f,d0 moveq #0,d1 CYB_init1: move.l d1,d2 subq.w #1,d0 CYB_init2: move.b (a0)+,d1 cmp.b d2,d1 bgt.s CYB_init1 dbf d0,CYB_init2 addq.b #1,d2 CYB_init3: lea CYB_data,a0 lea CYB_sample1(pc),a1 asl.l #8,d2 asl.l #2,d2 add.l #$438,d2 add.l a0,d2 moveq #$1e,d0 CYB_init4: move.l d2,(a1)+ moveq #0,d1 move.w 42(a0),d1 asl.l #1,d1 add.l d1,d2 add.l #$1e,a0 dbf d0,CYB_init4 lea CYB_sample1(PC),a0 moveq #0,d0 CYB_clear: move.l (a0,d0.w),a1 clr.l (a1) addq.w #4,d0 cmp.w #$7c,d0 bne.s CYB_clear clr.w $dff0a8 clr.w $dff0b8 clr.w $dff0c8 clr.w $dff0d8 clr.l CYB_partnrplay clr.l CYB_partnote clr.l CYB_partpoint move.b CYB_data+$3b6,CYB_maxpart+1 rts rts CYB_music: addq.w #1,CYB_counter CYB_cool:cmp.w #6,CYB_counter bne.s CYB_notsix clr.w CYB_counter bra CYB_rout2 CYB_notsix: lea CYB_aud1temp(PC),a6 tst.b 3(a6) beq.s CYB_arp1 lea $dff0a0,a5 bsr.s CYB_arprout CYB_arp1:lea CYB_aud2temp(PC),a6 tst.b 3(a6) beq.s CYB_arp2 lea $dff0b0,a5 bsr.s CYB_arprout CYB_arp2:lea CYB_aud3temp(PC),a6 tst.b 3(a6) beq.s CYB_arp3 lea $dff0c0,a5 bsr.s CYB_arprout CYB_arp3:lea CYB_aud4temp(PC),a6 tst.b 3(a6) beq.s CYB_arp4 lea $dff0d0,a5 bra.s CYB_arprout CYB_arp4: rts CYB_arprout: move.b 2(a6),d0 and.b #$0f,d0 tst.b d0 beq CYB_arpegrt cmp.b #$01,d0 beq.s CYB_portup cmp.b #$02,d0 beq.s CYB_portdwn cmp.b #$0a,d0 beq.s CYB_volslide rts CYB_portup: moveq #0,d0 move.b 3(a6),d0 sub.w d0,22(a6) cmp.w #$71,22(a6) bpl.s CYB_ok1 move.w #$71,22(a6) CYB_ok1: move.w 22(a6),6(a5) rts CYB_portdwn: moveq #0,d0 move.b 3(a6),d0 add.w d0,22(a6) cmp.w #$538,22(a6) bmi.s CYB_ok2 move.w #$538,22(a6) CYB_ok2: move.w 22(a6),6(a5) rts CYB_volslide: moveq #0,d0 move.b 3(a6),d0 lsr.b #4,d0 tst.b d0 beq.s CYB_voldwn add.w d0,18(a6) cmp.w #64,18(a6) bmi.s CYB_ok3 move.w #64,18(a6) CYB_ok3: move.w 18(a6),8(a5) rts CYB_voldwn: moveq #0,d0 move.b 3(a6),d0 and.b #$0f,d0 sub.w d0,18(a6) bpl.s CYB_ok4 clr.w 18(a6) CYB_ok4: move.w 18(a6),8(a5) rts CYB_arpegrt: move.w CYB_counter(PC),d0 cmp.w #1,d0 beq.s CYB_loop2 cmp.w #2,d0 beq.s CYB_loop3 cmp.w #3,d0 beq.s CYB_loop4 cmp.w #4,d0 beq.s CYB_loop2 cmp.w #5,d0 beq.s CYB_loop3 rts CYB_loop2: moveq #0,d0 move.b 3(a6),d0 lsr.b #4,d0 bra.s CYB_cont CYB_loop3: moveq #$00,d0 move.b 3(a6),d0 and.b #$0f,d0 bra.s CYB_cont CYB_loop4: move.w 16(a6),d2 bra.s CYB_endpart CYB_cont: add.w d0,d0 moveq #0,d1 move.w 16(a6),d1 and.w #$fff,d1 lea CYB_arpeggio(PC),a0 CYB_loop5: move.w (a0,d0),d2 cmp.w (a0),d1 beq.s CYB_endpart addq.l #2,a0 bra.s CYB_loop5 CYB_endpart: move.w d2,6(a5) rts CYB_rout2: lea CYB_data,a0 move.l a0,a3 add.l #$0c,a3 move.l a0,a2 add.l #$3b8,a2 add.l #$43c,a0 move.l CYB_partnrplay(PC),d0 moveq #0,d1 move.b (a2,d0),d1 asl.l #8,d1 asl.l #2,d1 add.l CYB_partnote(PC),d1 move.l d1,CYB_partpoint clr.w CYB_dmacon lea $dff0a0,a5 lea CYB_aud1temp(PC),a6 bsr CYB_playit lea $dff0b0,a5 lea CYB_aud2temp(PC),a6 bsr CYB_playit lea $dff0c0,a5 lea CYB_aud3temp(PC),a6 bsr CYB_playit lea $dff0d0,a5 lea CYB_aud4temp(PC),a6 bsr CYB_playit move.w #$01f4,d0 CYB_rls: dbf d0,CYB_rls move.w #$8000,d0 or.w CYB_dmacon,d0 move.w d0,$dff096 lea CYB_aud4temp(PC),a6 cmp.w #1,14(a6) bne.s CYB_voice3 move.l 10(a6),$dff0d0 move.w #1,$dff0d4 CYB_voice3: lea CYB_aud3temp(PC),a6 cmp.w #1,14(a6) bne.s CYB_voice2 move.w #1,$dff0c4 CYB_voice2: lea CYB_aud2temp(PC),a6 cmp.w #1,14(a6) bne.s CYB_voice1 move.l 10(a6),$dff0b0 move.w #1,$dff0b4 CYB_voice1: lea CYB_aud1temp(PC),a6 cmp.w #1,14(a6) bne.s CYB_voice0 move.l 10(a6),$dff0a0 move.w #1,$dff0a4 CYB_voice0: move.l CYB_partnote(PC),d0 add.l #$10,d0 move.l d0,CYB_partnote cmp.l #$400,d0 bne.s CYB_stop CYB_higher: clr.l CYB_partnote addq.l #1,CYB_partnrplay moveq #0,d0 move.w CYB_maxpart(PC),d0 move.l CYB_partnrplay(PC),d1 cmp.l d0,d1 bne.s CYB_stop clr.l CYB_partnrplay ;st Pflag CYB_stop:tst.w CYB_status beq.s CYB_stop2 clr.w CYB_status bra.s CYB_higher CYB_stop2: rts CYB_playit: move.l (a0,d1.l),(a6) addq.l #4,d1 moveq #0,d2 move.b 2(a6),d2 and.b #$f0,d2 lsr.b #4,d2 move.b (a6),d0 and.b #$f0,d0 or.b d0,d2 tst.b d2 beq.s CYB_nosamplechange moveq #0,d3 lea CYB_samples(PC),a1 move.l d2,d4 asl.l #2,d2 mulu #$1e,d4 move.l (a1,d2),4(a6) move.w (a3,d4.l),8(a6) move.w 2(a3,d4.l),18(a6) move.w 4(a3,d4.l),d3 tst.w d3 beq.s CYB_displace move.l 4(a6),d2 add.l d3,d2 move.l d2,4(a6) move.l d2,10(a6) move.w 6(a3,d4.l),8(a6) move.w 6(a3,d4.l),14(a6) move.w 18(a6),8(a5) bra.s CYB_nosamplechange CYB_displace: move.l 4(a6),d2 add.l d3,d2 move.l d2,10(a6) move.w 6(a3,d4.l),14(a6) move.w 18(a6),8(a5) CYB_nosamplechange: move.w (a6),d0 and.w #$fff,d0 tst.w d0 beq.s CYB_retrout move.w (a6),16(a6) move.w 20(a6),$dff096 move.l 4(a6),(a5) move.w 8(a6),4(a5) move.w (a6),d0 and.w #$fff,d0 move.w d0,6(a5) move.w 20(a6),d0 or.w d0,CYB_dmacon CYB_retrout: tst.w (a6) beq.s CYB_nonewper move.w (a6),22(a6) CYB_nonewper: move.b 2(a6),d0 and.b #$0f,d0 cmp.b #$0b,d0 beq.s CYB_posjmp cmp.b #$0c,d0 beq.s CYB_setvol cmp.b #$0d,d0 beq.s CYB_break cmp.b #$0e,d0 beq.s CYB_setfil cmp.b #$0f,d0 beq.s CYB_setspeed rts CYB_posjmp: not.w CYB_status moveq #0,d0 move.b 3(a6),d0 subq.b #1,d0 move.l d0,CYB_partnrplay rts CYB_setvol: move.b 3(a6),8(a5) rts CYB_break: not.w CYB_status rts CYB_setfil: moveq #0,d0 move.b 3(a6),d0 and.b #1,d0 rol.b #1,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts CYB_setspeed: move.b 3(a6),d0 and.b #$0f,d0 beq.s CYB_back clr.w CYB_counter move.b d0,CYB_cool+3 CYB_back: rts CYB_aud1temp: dcb.w 10,0 dc.w 1 dcb.w 2,0 CYB_aud2temp: dcb.w 10,0 dc.w 2 dcb.w 2,0 CYB_aud3temp: dcb.w 10,0 dc.w 4 dcb.w 2,0 CYB_aud4temp: dcb.w 10,0 dc.w 8 dcb.w 2,0 CYB_partnote: dc.l 0 CYB_partnrplay: dc.l 0 CYB_counter: dc.w 0 CYB_partpoint: dc.l 0 CYB_samples: dc.l 0 CYB_sample1: dcb.l 31,0 CYB_maxpart: dc.w 0 CYB_dmacon: dc.w 0 CYB_status: dc.w 0 CYB_arpeggio: dc.w $0358,$0328,$02fa,$02d0,$02a6,$0280,$025c dc.w $023a,$021a,$01fc,$01e0,$01c5,$01ac,$0194,$017d dc.w $0168,$0153,$0140,$012e,$011d,$010d,$00fe,$00f0 dc.w $00e2,$00d6,$00ca,$00be,$00b4,$00aa,$00a0,$0097 dc.w $008f,$0087,$007f,$0078,$0071,$0000,$0000,$0000 ; ** THE COPPERLIST ** OURCOPPER: Blank1L dc.w bpl1ptl,$0000 Blank1H dc.w bpl1pth,$0000 Blank2L dc.w bpl3ptl,$0000 Blank2H dc.w bpl3pth,$0000 Blank3L dc.w bpl5ptl,$0000 Blank3H dc.w bpl5pth,$0000 dc.w $120,0 dc.w $122,0 dc.w bpl1mod,4,bpl2mod,0 dc.w diwstrt,$2c81-32,diwstop,$2cc1+32 dc.w bplcon0,$6600,bplcon1,$0000 dc.w ddfstrt,$28,ddfstop,$d0 dc.w color01,$000 dc.w color08,$000,color09,$ff0,color10,$ee0,color11,$dd0 dc.w color12,$de0,color13,$dc0,color14,$db0,color15,$da0 bp2lo: dc.w bpl2ptl,$0000 bp2hi: dc.w bpl2pth,$0000 bp4lo: dc.w bpl4ptl,$0000 bp4hi: dc.w bpl4pth,$0000 bp6lo: dc.w bpl6ptl,$0000 bp6hi: dc.w bpl6pth,$0000 deltay2:wait $3909,$fffe bp1lo: dc.w bpl1ptl,$0000 bp1hi: dc.w bpl1pth,$0000 bp3lo: dc.w bpl3ptl,$0000 bp3hi: dc.w bpl3pth,$0000 bp5lo: dc.w bpl5ptl,$0000 bp5hi: dc.w bpl5pth,$0000 DC.W color01,$eee Dc.w color02,$dde DC.W color03,$bbd DC.W color04,$aac DC.W color05,$88c DC.W color06,$77b DC.W color07,$65a dc.w color01,$eee wait $5109,$fffe dc.w bpl1mod,-44 wait $5209,$fffe dc.w bpl1mod,4 wait $5309,$fffe dc.w bpl1mod,-44 wait $5409,$fffe dc.w bpl1mod,4 wait $5509,$fffe dc.w bpl1mod,-44 wait $5609,$fffe dc.w bpl1mod,4 wait $5709,$fffe dc.w bpl1mod,-44 wait $5809,$fffe dc.w bpl1mod,4 wait $5909,$fffe dc.w bpl1mod,-44 wait $5a09,$fffe dc.w bpl1mod,4 wait $5b09,$fffe dc.w bpl1mod,-44 wait $5c09,$fffe dc.w bpl1mod,4 wait $5d09,$fffe dc.w bpl1mod,-44 wait $5e09,$fffe dc.w bpl1mod,4 wait $5f09,$fffe dc.w bpl1mod,-44 wait $6009,$fffe dc.w bpl1mod,4 wait $6109,$fffe dc.w bpl1mod,-44 wait $6209,$fffe dc.w bpl1mod,4 wait $6309,$fffe dc.w bpl1mod,-44 wait $6409,$fffe dc.w bpl1mod,4 wait $6509,$fffe dc.w bpl1mod,-44 wait $6609,$fffe dc.w bpl1mod,4 wait $6709,$fffe dc.w bpl1mod,-44 wait $6809,$fffe dc.w bpl1mod,4 wait $6909,$fffe dc.w bpl1mod,-44 wait $6a09,$fffe dc.w bpl1mod,4 wait $6b09,$fffe dc.w bpl1mod,-44 wait $6c09,$fffe dc.w bpl1mod,4 wait $6d09,$fffe dc.w bpl1mod,-44 wait $6e09,$fffe dc.w bpl1mod,4 wait $6f09,$fffe dc.w bpl1mod,-44 wait $7009,$fffe dc.w bpl1mod,4 wait $7109,$fffe dc.w bpl1mod,-44 wait $7209,$fffe dc.w bpl1mod,4 wait $7309,$fffe dc.w bpl1mod,-44 wait $7409,$fffe dc.w bpl1mod,4 wait $7509,$fffe dc.w bpl1mod,-44 wait $7609,$fffe dc.w bpl1mod,4 wait $7709,$fffe dc.w bpl1mod,-44 wait $7809,$fffe dc.w bpl1mod,4 wait $7909,$fffe dc.w bpl1mod,-44 wait $7a09,$fffe dc.w bpl1mod,4 wait $7b09,$fffe dc.w bpl1mod,-44 wait $7c09,$fffe dc.w bpl1mod,4 wait $7d09,$fffe dc.w bpl1mod,-44 wait $7e09,$fffe dc.w bpl1mod,4 wait $7f09,$fffe dc.w bpl1mod,-44 wait $8009,$fffe dc.w bpl1mod,4 deltay: wait $da09,$fffe abp1lo: dc.w bpl1ptl,$0000 abp1hi: dc.w bpl1pth,$0000 abp3lo: dc.w bpl3ptl,$0000 abp3hi: dc.w bpl3pth,$0000 abp5lo: dc.w bpl5ptl,$0000 abp5hi: dc.w bpl5pth,$0000 DC.W color01,$ee0 Dc.w color02,$dd0 DC.W color03,$bb0 DC.W color04,$aa0 DC.W color05,$880 DC.W color06,$770 DC.W color07,$650 end_copper ;LOCAL CONSTANTS WBCOPPER: DC.L 0 GFXLIB: DC.B "graphics.library",0 GFXBASE: DC.L 0 systemints: dc.l 0 scroll_offset: dc.l 0 screenx: dc.l picture screeny: dc.l picture2 letter: dc.b 0 letter2: dc.b 0 val: dc.l 0 val2: dc.l 0 stopper: dc.l 0 stopper2: dc.l 0 speed: dc.w 12 ycord: dc.l 0 ycordminus: dc.l 0 ycord2: dc.l 0 ycordminus2:dc.l 0 Blank Dcb.b 4000,0 ;BINARY FILES TO BE INCLUDED EVEN FONTSPACE: font: incbin df1:METALCHARS picture2 dcb.b 10000*3,0 picture: dcb.b 10000*3,0 PLAY2: INCBIN DF1:PIC.IFF2 cyb_data: incbin df1:mod.slip